#ifndef EXECUTOR_H
#define EXECUTOR_H

#include <cstdint>
#include <string>

class Executor {
public:
    // 构造函数：默认初始值(0,0,N)，非加速状态
    Executor();

    // 初始化接口：自定义位置和朝向，默认非加速
    void initialize(int32_t x, int32_t y, char heading);

    // 执行单条指令（M/L/R/F）
    void executeCommand(char command);

    // 执行批量指令
    void executeCommands(const std::string& commands);

    // 查询接口：返回位置、朝向、加速状态（兼容所有测试场景）
    void getCurrentState(int32_t& x, int32_t& y, char& heading, bool& isAccelerated) const;

private:
    int32_t x_;          // X轴坐标（EW方向：E+ / W-）
    int32_t y_;          // Y轴坐标（NS方向：N+ / S-）
    char heading_;       // 朝向（N/S/E/W）
    bool isAccelerated_; // 加速状态标志（默认false）

    // 辅助函数
    void turnLeft();     // 左转90度
    void turnRight();    // 右转90度
    void moveForward();  // 前进1格
    void toggleAccel();  // 切换加速状态（F指令触发）
};

#endif // EXECUTOR_H